AVID: A Reliable Substrate for Speculation and Limited Execution∗
نویسندگان
چکیده
With the advent of DIVA style correctness checking [1], processor architecture becomes much less constricted, to the point that even an entirely nonfunctional processor with a DIVA checker will produce correct results. Without the need for absolute correctness, processor designs that work “most of the time” are still acceptable. In this paper, we examine input dependent architecture variance (AVID), a design that uses communication with a DIVA checker to change processor functionality to best fit the needs of the current process. By throttling the functionality of different units to be the minimum necessary, we can avoid losing cycles and reduce total power usage. We explore AVID in relation to three areas of processor functionality: branch prediction, memory disambiguation, and multiplication and division computation. The applicability of AVID is not restricted to these areas, but we use these as a proof of concept. We begin by explaining the operation of the AVID architecture. We then evaluate the performance gains and power savings realized by implementing the AVID architecture and testing it on several benchmarks. In order to evaluate power savings, we introduce a simplified power model, and explain how we derived our power values. We concluded that appreciable savings in power usage can be achieved by using AVID on the branch predictors, and that us∗It must be noted that this is the first formal paper by either of the authors, and as such it’s layout borrows heavily from other papers, specifically the original DIVA paper [1] by Todd Austin. 1For acronym’s sake we can refer to the design as Architecture Variance, Input Dependent. AVID sounds better than IDAV, and it’s DIVA backwards, which seemed appropriate. ing AVID to throttle the multiplication and division units can lower the CPI. We concluded that AVID is a viable architecture that has the ability to save time and power, and the potential to be applied to several aspects of computer architecture.
منابع مشابه
Avid Execution and Instruction Pruning in the Asynchronous Processor Kin
Avid execution prefetches and speculatively executes not only the predicted branches of a program but also a certain part of the non-predicted branches, in anticipation of misprediction. Once a misprediction occurs, the processor may immediately turn to one of the secondary paths and continue executing without interruption. The stale instructions are removed quietly without flushing the process...
متن کاملAVID: A Complexity Effective Front-End Architecture for Fast Memory Disambiguation and Early Data Prefetching
False dependency between load and store prevents independent load from executing. Without speculation, ambiguous load should wait until there is no address confliction of preceding store instruction, which cause unnecessary latency. On the other hand, the load can be executed speculatively, which costs the penalty when it turns out to be miss-predicted by back-end. We propose a complexity effec...
متن کاملScaling an Object-Oriented System Execution Visualizer through Sampling
Increasingly, applications are being built by combining existing software components. For the most part, a software developer can treat the components as black-boxes. However, for some tasks, such as when performance tuning, a developer must consider how the components are implemented and how they interact. In these cases, a developer may be able to perform the task more effectively by using dy...
متن کاملHelper Transactions: Enabling Thread-Level Speculation via A Transactional Memory System
As multi-core processors become readily available in the market, how to exploit parallelization opportunities to unleash the performance potential has become the utmost concern. Thread-Level Speculation (TLS) has been studied as one such enabling technique to automatically extracting possibly nonconflicting threads for execution in a program. On the other hand, transactional memory (TM) systems...
متن کاملLinux Support for Transparent Checkpointing of Multithreaded Programs
The most common use of checkpointing is in fault tolerant computing where the goal is to minimize loss of CPU cycles when a long executing program crashes before completion. By checkpointing a program’s state at regular intervals, the amount of lost computation is limited to the interval from the last checkpoint to the time of crash. Research in this class of checkpoint algorithms and systems h...
متن کامل